#include <vector>
#include <stack>

using namespace std;

// 给定一个整数数组 temperatures ，表示每天的温度，返回一个数组 answer ，
// 其中 answer[i] 是指在第 i 天之后，才会有更高的温度。如果气温在这之后都不会升高，请在该位置用 0 来代替

class Solution
{
public:
    vector<int> dailyTemperatures(vector<int> &temperatures)
    {
        stack<int> a;
        vector<int> ret(temperatures.size());

        for (int i = 0; i < temperatures.size(); ++i)
        {
            while (!a.empty() && temperatures[i] > temperatures[a.top()])
            {
                int preTop = a.top();
                ret[preTop] = i - preTop;
                a.pop();
            }
            a.push(i);
        }
        return ret;
    }
};